package com;

/**
 * 守护者线程(兜底线程)
 * 
 * 每个程序运行当中,都会默认开启一个守护者线程,用于监听我们正常的程序
 * 
 * 当然如果,除了 main 线程之外,还有一个 t2线程的话,那么 t1 守护线程,需要等 t2 也执行完才会销毁
 * 
 * 简单来说,就是没有任何一个线程执行的时候,jvm就需要退出了,这个 时候,守护线程也会退出,主要是完成垃圾回收功能
 * 
 * 可以通过setDaemon() 来设置一个指定的守护线程
 * 
 * @author lenovo
 * @date 2020年7月24日
 */
public class Thread_09_Demon {

	public static void main(String[] args) {
		Thread t1 = new Thread(new Processor11());
		Thread t2 = new Thread(new Processor11());
		// 把t1设置为守护线程,会随着主线程而死亡
		t1.setName("t1");
		t2.setName("t2");
		t1.start();
		t2.start();

		for (int i = 0; i < 5; i++) {
			System.out.println(Thread.currentThread().getName() + "-->" + i);
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

class Processor11 implements Runnable {

	@Override
	public void run() {
		int i = 0;
		while (true) {
			System.out.println(Thread.currentThread().getName() + "-->" + i);
			i++;
			try {
				Thread.sleep(500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}